#version 420 core

layout (location = 0) out vec4 accum;  // 输出到累积缓冲区
layout (location = 1) out float reveal; // 输出到可见性缓冲区

uniform vec4 color; // 传入的材质颜色

void main() {
    // 加权函数：结合透明度和深度
    float weight = clamp(
        pow(min(1.0, color.a * 10.0) + 0.01, 3.0) * 1e8 * 
        pow(1.0 - gl_FragCoord.z * 0.9, 3.0), 
        1e-2, 3e3
    );

    // 存储像素颜色累积
    accum = vec4(color.rgb * color.a, color.a) * weight;
    // 存储像素可见性阈值
    reveal = color.a;
}